package com.bigbirdmed.cloud.admin.api.dto;

import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.bigbirdmed.cloud.common.core.page.PaginationInput;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * @author lengleng
 * @date 2020/10/9
 * <p>
 * 日志查询传输对象
 */
@Data
@ApiModel(value = "日志DTO")
public class SysLogDTO {



	@AllArgsConstructor
	@NoArgsConstructor
	@ApiModel(value = "LogPageDTO",description = "日志分页")
	public  static  class  LogPageDTO extends PaginationInput.PageDTO implements Serializable  {
		/**
		 * 查询日志类型
		 */
		@ApiModelProperty(value = "日志类型")
		private String type;

		/**
		 * 开始时间
		 */
		@ApiModelProperty(value = "开始时间")
		private String startTime;

		/**
		 * 开始时间
		 */
		@ApiModelProperty(value = "结束时间")
		private String endTime;
	}

	@ApiModel(value = "SaveLogDTO",description = "新增日志")
	public static  class  SaveLogDTO implements  Serializable{

		private static final long serialVersionUID = -5074989714352308016L;
		/**
		 * 日志类型
		 */
		@NotBlank(message = "日志类型不能为空")
		@ExcelProperty("日志类型（0-正常 9-错误）")
		@ApiModelProperty(value = "日志类型")
		private Integer type;

		/**
		 * 日志标题
		 */
		@NotBlank(message = "日志标题不能为空")
		@ExcelProperty("日志标题")
		@ApiModelProperty(value = "日志标题")
		private String title;

		/**
		 * 操作IP地址
		 */
		@ExcelProperty("IP")
		@ApiModelProperty(value = "操作ip地址")
		private String remoteAddr;

		/**
		 * 用户浏览器
		 */
		@ExcelProperty("浏览器类型")
		@ApiModelProperty(value = "用户代理")
		private String userAgent;

		/**
		 * 请求URI
		 */
		@ExcelProperty("请求URI")
		@ApiModelProperty(value = "请求uri")
		private String requestUri;

		/**
		 * 操作方式
		 */
		@ExcelProperty("操作方式")
		@ApiModelProperty(value = "操作方式")
		private String method;

		/**
		 * 操作提交的数据
		 */
		@ExcelProperty("请求参数")
		@ApiModelProperty(value = "数据")
		private String params;

		/**
		 * 执行时间
		 */
		@ExcelProperty("方法执行时间")
		@ApiModelProperty(value = "方法执行时间")
		private Long time;

		/**
		 * 异常信息
		 */
		@ExcelProperty("异常信息")
		@ApiModelProperty(value = "异常信息")
		private String exception;

		/**
		 * 服务ID
		 */
		@ExcelProperty("应用标识")
		@ApiModelProperty(value = "应用标识")
		private String serviceId;
	}

}
